package ${generator.packageName}.service;

import com.baomidou.mybatisplus.extension.service.IService;

import ${generator.commonPackage}.base.utils.DxracerParamPage;
import ${generator.commonPackage}.base.utils.DxracerResponse;
import ${generator.commonPackage}.base.utils.DxracerResponsePage;
import ${generator.basePackageName}.entity.${generator.className}DO;
import ${generator.packageName}.entity${(generator.childPackageName)!""}.dto.${generator.className}InsertDTO;
import ${generator.packageName}.entity${(generator.childPackageName)!""}.dto.${generator.className}UpdateDTO;
import ${generator.packageName}.entity${(generator.childPackageName)!""}.dto.${generator.className}QueryDTO;
import ${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO;

import java.util.List;

/**
 * ${generator.tableComment} 业务接口
 *
 * @author ${generator.author}
 * @version 0.0.1
 * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
 * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
 */
public interface ${generator.className}Service extends IService<${generator.className}DO> {


<#if generator.functions?seq_contains("insert")>
    /**
      * 功能描述
      * <p>
      *    新增
      * </p>
      *
      * @param ${generator.className?uncap_first}InsertDTO 新增实体类
      * @return ${generator.commonPackage}.base.utils.DxracerResponse<java.lang.String>
      * @author ${generator.author}
      * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
      * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
      */
    DxracerResponse<String> insert(${generator.className}InsertDTO ${generator.className?uncap_first}InsertDTO);

</#if>
<#if generator.functions?seq_contains("update")>
    /**
    * 功能描述
    * <p>
    *    修改
    * </p>
    *
    * @param ${generator.className?uncap_first}UpdateDTO 修改实体类
    * @return ${generator.commonPackage}.base.utils.DxracerResponse<java.lang.String>
    * @author ${generator.author}
    * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    */
    DxracerResponse<String> modify(${generator.className}UpdateDTO ${generator.className?uncap_first}UpdateDTO);

</#if>
<#if generator.functions?seq_contains("delete")>
    /**
    * 功能描述
    * <p>
    *    根据id删除
    * </p>
    *
    * @param id 主键
    * @return ${generator.commonPackage}.base.utils.DxracerResponse<java.lang.String>
    * @author ${generator.author}
    * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    */
    DxracerResponse<String> deleteById(Integer id);

</#if>
<#if generator.functions?seq_contains("get")>
    /**
     * 功能描述
     * <p>
     *    获取单条数据
     * </p>
     *
     * @param ${generator.className?uncap_first}QueryDTO 查询条件
     * @return ${generator.commonPackage}.base.utils.DxracerResponse<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>
     * @author ${generator.author}
     * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     */
    DxracerResponse<${generator.className}GetVO> selectOne(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO);

    <#if relations?? && (relations?size > 0)>
    /**
     * 功能描述
     * <p>
     *    关联表分页查询
     * </p>
     *
     * @param ${generator.className?uncap_first}QueryDTO 查询条件
     * @return ${generator.commonPackage}.base.utils.DxracerResponse<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>
     * @author ${generator.author}
     * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     */
    DxracerResponse<${generator.className}GetVO> selectRelation(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO);

    </#if>
</#if>
<#if generator.functions?seq_contains("page")>
    /**
     * 功能描述
     * <p>
     *    单表分页查询
     * </p>
     *
     * @param ${generator.className?uncap_first}QueryDTO 查询条件
     * @param dxracerParamPage 分页参数
     * @return ${generator.commonPackage}.base.utils.DxracerResponsePage<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>
     * @author ${generator.author}
     * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     */
    DxracerResponsePage<${generator.className}GetVO> getPage(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO, DxracerParamPage dxracerParamPage);

<#if relations?? && (relations?size > 0)>
    /**
    * 功能描述
    * <p>
    *    关联表分页查询
    * </p>
    *
    * @param ${generator.className?uncap_first}QueryDTO 查询条件
    * @param dxracerParamPage 分页参数
    * @return ${generator.commonPackage}.base.utils.DxracerResponsePage<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>
    * @author ${generator.author}
    * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
    */
    DxracerResponsePage<${generator.className}GetVO> getRelationPage(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO, DxracerParamPage dxracerParamPage);

</#if>
</#if>
<#if generator.functions?seq_contains("list")>
    /**
     * 功能描述
     * <p>
     *    单表查询列表
     * </p>
     *
     * @param ${generator.className?uncap_first}QueryDTO 查询条件
     * @return ${generator.commonPackage}.base.utils.DxracerResponse<java.util.List<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>>
     * @author ${generator.author}
     * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     */
    DxracerResponse<List<${generator.className}GetVO>> getList(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO);

    <#if relations?? && (relations?size > 0)>
    /**
     * 功能描述
     * <p>
     *    关联表查询列表
     * </p>
     *
     * @param ${generator.className?uncap_first}QueryDTO 查询条件
     * @return ${generator.commonPackage}.base.utils.DxracerResponse<java.util.List<${generator.packageName}.entity${(generator.childPackageName)!""}.vo.${generator.className}GetVO>>
     * @author ${generator.author}
     * @date ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]}
     */
    DxracerResponse<List<${generator.className}GetVO>> getRelationList(${generator.className}QueryDTO ${generator.className?uncap_first}QueryDTO);

    </#if>
</#if>
<#if generator.functions?seq_contains("batchInsert")>

</#if>
<#if generator.functions?seq_contains("batchUpdate")>

</#if>
<#if generator.functions?seq_contains("batchDelete")>

</#if>
<#if generator.functions?seq_contains("import")>

</#if>
<#if generator.functions?seq_contains("export")>

</#if>
}
